package com.pavlinic.mylisp.specialForms;

import com.pavlinic.mylisp.EvaluationContext;
import com.pavlinic.mylisp.Expression;
import com.pavlinic.mylisp.ListExpression;
import com.pavlinic.mylisp.ValueExpression;

public class If {
	public static Expression evaluateIf(ListExpression listExpression, EvaluationContext context) {
		if (isTrue(listExpression.get(1).evaluate(context))) {
			return listExpression.get(2).evaluate(context);
		}
		return listExpression.get(3).evaluate(context);
	}

	static boolean isTrue(Expression expression) {
		final ValueExpression value = (ValueExpression) expression;
		return !value.getValue().equals(false);
	}

}
